package com.xianbeiying.app.ckgl.data;

/**
 * Cmd接口
 * 
 * @author MiJunQiang
 *
 */
public interface Cmd {
	/**
	 * 正常
	 */
	byte CMD_OK = 0X00;
	
	/**
	 * 计划不存在
	 */
	byte CMD_NOEXIST = (byte) 0X85;

	/**
	 * 超时
	 */
	byte CMD_TIME_OUT = (byte) 0X80;

	/**
	 * 起始位
	 */
	public static final byte FRAME_START = 0X68;

	/**
	 * 帧长度，不包括用户数据部分
	 */
	public static final byte FRAME_LENGTH = 8;

	/**
	 * 结束位
	 */
	public static final byte FRAME_END = 0X16;

	/**
	 * 源ID，中央控制室ID固定为0X00
	 */
	public static final byte FRAME_SOURCE = 0X00;

	/**
	 * 数据开始位
	 */
	public static final byte INDEX_FRAME_DATA = 6;

	/**
	 * 命令字：设置系统时钟
	 */
	public static final byte CMD_TIME_SET = 0X01;

	/**
	 * 命令字：获取系统时钟
	 */
	public static final byte CMD_TIME_GET = 0X02;
	
	/**
	 * 透明传输指令
	 */
	public static final byte CMD_DIRECT_TRANSFER = 0x0E;

	/**
	 * 命令字：设置灌溉计划
	 */
	public static final byte CMD_PLAN_SET = 0X10;
	
	/**
	 * 任务类型:土壤温度控制开关电动阀和电磁阀
	 */
	public static final byte TASK_TYPE_TRIGGER_SOIL_HUMI_TAP = 0X01;
	
	/**
	 * 任务类型:空气湿度控制开关风机
	 */
	public static final byte TASK_TYPE_TRIGGER_AIR_TEMP_FAN = 0X02;
	
	/**
	 * 任务类型:周期
	 */
	public static final byte TASK_TYPE_CYCLE_TAP = 0X00;
	
	/**
	 * 任务类型:周期
	 */
	public static final byte TASK_TYPE_CYCLE_GROW_LIGHT = 0X03;
	
	/**
	 * 命令字：查询灌溉计划
	 */
	public static final byte CMD_PLAN_GET = 0X11;
	/**
	 * 命令字：启动灌溉计划
	 */
	public static final byte CMD_PLAN_START = 0X12;
	/**
	 * 命令字：停止灌溉计划
	 */
	public static final byte CMD_PLAN_STOP = 0X13;
	/**
	 * 命令字：删除灌溉计划
	 */
	public static final byte CMD_PLAN_DELETE = 0X14;

	/**
	 * 命令字：操作外接设备
	 */
	public static final byte CMD_EXTERNAL_EQP_SET = 0X2D;

	/**
	 * 命令字：查询外接设备状态
	 */
	public static final byte CMD_EXTERNAL_EQP_GET = 0X2E;

	/**
	 * 命令字：设置阀门开启/关闭
	 */
	public static final byte CMD_VALVE_SWITCH_SET = 0X2d;

	/**
	 * 命令字：查询阀门开启/关闭状态
	 */
	public static final byte CMD_VALVE_SWITCH_GET = 0X2e;

	/**
	 * 命令字：设置风机开启/关闭
	 */
	public static final byte CMD_FAN_SWITCH_SET = 0X2d;

	/**
	 * 命令字：查询风机开启/关闭状态
	 */
	public static final byte CMD_FAN_SWITCH_GET = 0X2e;

	/**
	 * 命令字：设置卷帘开启/关闭
	 */
	public static final byte CMD_ROLLSCREEN_SWITCH_SET = 0X2d;

	/**
	 * 命令字：查询卷帘开启/关闭状态
	 */
	public static final byte CMD_ROLLSCREEN_SWITCH_GET = 0X2e;

	/**
	 * 设备状态：打开
	 */
	public static final byte EQP_STATUS_OPEN = 0X64;

	/**
	 * 设备状态：关闭
	 */
	public static final byte EQP_STATUS_CLOSE = 0X00;
	
	/**
	 * 设备状态：未知
	 */
	public static final byte EQP_STATUS_UNKNOW = (byte) 0XFE;
	
	/**
	 * 设备状态：不存在
	 */
	public static final byte EQP_STATUS_NOEXIST = (byte) 0XFF;

	
	/**
	 * 设备卷帘机状态：打开
	 */
	public static final byte EQP_ROLLING_STATUS_OPEN = 0X65;
	/**
	 * 设备卷帘机状态：关闭
	 */
	public static final byte EQP_ROLLING_STATUS_CLOSE = 0X66;
	/**
	 * 设备卷帘机状态：停止
	 */
	public static final byte EQP_ROLLING_STATUS_STOP = 0X67;
	
	/**
	 * 设备状态：查询
	 */
	public static final byte EQP_STATUS_QUERY = 0X68;
	
	/**
	 * 获取命令字节
	 * 
	 * @return
	 */
	public byte[] getCmd();

	/**
	 * 设置命令结果
	 * 
	 * @param result
	 */
	public void setResult(byte[] result);

	public byte getErrorCode();

	public void setErrorCode(byte errorCode);

}
